package com.bjpowernode.crm.workbench.service;

import com.bjpowernode.crm.workbench.domain.Activity;
import com.bjpowernode.crm.workbench.domain.ClueActivityRelation;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 处理线索与市场活动关联相关业务
 *
 * @author 刘逸晖
 */
public interface ClueActivityRelationService {

    /**
     * 查询未与指定线索关联的市场活动，可通过市场活动的名称过滤
     *
     * @param activityName 市场活动的名称
     * @param clueId       线索 id
     * @return 市场活动列表
     */
    List<Activity> queryActivitiesNotRelated(String clueId, String activityName);

    /**
     * 线索关联市场活动列表
     *
     * @param activityIds 预关联市场活动的 id 列表
     * @param clueId      线索的 id
     */
    void relateActivitiesByIds(String[] activityIds, String clueId);

    /**
     * 删除线索与市场活动的关联关系
     *
     * @param clueId     线索 id
     * @param activityId 市场活动的 id
     */
    void deleteClueActivityRelationByClueIdAndActivityId(String clueId, String activityId);

    /**
     * 查询与指定线索关联的市场活动，可通过市场活动的名称过滤
     *
     * @param clueId       线索 id
     * @param activityName 市场活动的名称
     * @return 市场活动列表
     */
    List<Activity> queryRelatedActivities(String activityName, String clueId);

    /**
     * 根据线索 id 查询线索与市场活动的关联关系
     *
     * @param clueId 线索 id
     * @return 线索与市场活动的关联关系
     */
    List<ClueActivityRelation> queryClueActivityRelationsByClueId(String clueId);

    /**
     * 查询与指定线索关联的市场活动的 id
     *
     * @param clueId 线索 id
     * @return 市场活动的 id
     */
    List<String> queryIdsOfRelatedActivities(String clueId);

    /**
     * 根据线索 id 批量删除线索与市场活动的关联关系
     *
     * @param clueId 线索 id
     */
    void removeClueActivityRelationsByClueId(@Param("clueId") String clueId);

}
